package com.lanou3g.code0404.morning;

/**
 * Created by dllo on 18/4/4.
 */
public class Foo2 {
    //返回值
    /*
    1.add方法作用:接收两个int类型的值,并求和
    2.int add(int num1,int num2){}
    第一个int 叫做返回值类型
    用来表示:这个方法可以返回给调用方,一个什么类型的数据

    */

    int add(int num1,int num2){
        int result=num1+num2;
        //如果返回值类型这里写的不是void 则这个方法必须有明确的返回值
        //即 必须写出return 关键字
        //return 关键字后跟着要返回的结果
        return result;
    }

    void fun(){
        System.out.println("这个方法没有返回值");
    }


    /*
    return 专门用在方法中
    这个关键字的作用是:直接,结束一个方法及在return 后的代码
    全部都不会执行.如果一个方法声明了有返回值,那么必须写
    return 返回值;
    如果一个方法声明了没有返回值(void);那么可以省略return;
    并且由于没有返回值,那么即使写了return 后面也不需要写要返回的值

    */


    /*
    打印一个数组
    */

    void printArr(int [] arr){
        if(arr==null){
            //防御式编程
            System.out.println("你有没有new 自己心里没点数吗");
            //当执行到return 的时候,方法会无条件结束
            return;
        }
        System.out.print("[");
        for(int x=0;x<arr.length;x++){
            if(x!=arr.length-1){
                System.out.print(arr[x]+",");
            }else{
                System.out.println(arr[x]+"]");
            }







        }
    }
    //但凡 我们要 改变一个字符串的值
    // 就必须有返回值
    String fun3(String s){
        s ="Echo:"+s;
        return s;
    }
    Table fun4(Table a){
        a=new Table();
        a.color="red";
        a.legCount=4;
        return a ;
    }
    //可以用... 表示不确定个数的参数
    //不是很常用,但是有这样的写法
    //在方法里使用的时候,
    //nums其实就是个int类型的数组
    int addAll(int...nums){
        int sum=0;
        for (int i = 0; i < nums.length; i++) {
            sum+=nums[i];

        }
        return  sum;
    }
}